NAME			=	OpenGL
LINK			=	$(NAME).lnk



DIR_BIN			=	Binaries/
DIR_SRC			=	Sources/
DIR_INC			=	Headers/
DIR_LIB			=	Libraries/
DIR_RES			=	Resources/

DIR_DAT			=	Content/
DIR_DAT_TXT		=	$(DIR_DAT)Textures/



SRC				=	$(DIR_SRC)Main.cpp								\
					$(DIR_SRC)Static.cpp							\
																	\
					$(DIR_SRC)Class/Manager/Scene/Basic.cpp			\
					$(DIR_SRC)Class/Manager/Scene/Initialize.cpp	\
					$(DIR_SRC)Class/Manager/Scene/Run.cpp			\
																	\
					$(DIR_SRC)Class/Manager/Graphics/Basic.cpp		\
					$(DIR_SRC)Class/Manager/Graphics/Window.cpp		\
					$(DIR_SRC)Class/Manager/Graphics/Display.cpp	\
					$(DIR_SRC)Class/Manager/Graphics/GetSet.cpp		\
					$(DIR_SRC)Class/Manager/Graphics/Is.cpp			\
																	\
					$(DIR_SRC)Class/Manager/Input/Basic.cpp			\
					$(DIR_SRC)Class/Manager/Input/Update.cpp		\
					$(DIR_SRC)Class/Manager/Input/GetSet.cpp		\
																	\
					$(DIR_SRC)Abstract/Scene/AScene/Basic.cpp		\
					$(DIR_SRC)Abstract/Scene/AScene/GetSet.cpp		\
																	\
					$(DIR_SRC)Class/Scene/Game/Basic.cpp			\
					$(DIR_SRC)Class/Scene/Game/Update.cpp			\
					$(DIR_SRC)Class/Scene/Game/Draw.cpp				\
																	\
					$(DIR_SRC)Abstract/Entity/AEntity/Basic.cpp		\
					$(DIR_SRC)Abstract/Entity/AEntity/Operator.cpp	\
					$(DIR_SRC)Abstract/Entity/AEntity/GetSet.cpp	\
																	\
					$(DIR_SRC)Abstract/Entity/ADrawable/Basic.cpp	\
																	\
					$(DIR_SRC)Class/Entity/Camera2D/Basic.cpp		\
					$(DIR_SRC)Class/Entity/Camera2D/Operator.cpp	\
					$(DIR_SRC)Class/Entity/Camera2D/GetSet.cpp		\
																	\
					$(DIR_SRC)Class/Entity/Camera3D/Basic.cpp		\
					$(DIR_SRC)Class/Entity/Camera3D/Operator.cpp	\
					$(DIR_SRC)Class/Entity/Camera3D/GetSet.cpp		\
																	\
					$(DIR_SRC)Class/Entity/Image/Basic.cpp			\
					$(DIR_SRC)Class/Entity/Image/Operator.cpp		\
					$(DIR_SRC)Class/Entity/Image/GetSet.cpp			\
					$(DIR_SRC)Class/Entity/Image/Update.cpp			\
					$(DIR_SRC)Class/Entity/Image/Draw.cpp			\
																	\
					$(DIR_SRC)Class/Component/Image/Basic.cpp		\
					$(DIR_SRC)Class/Component/Image/Operator.cpp	\
					$(DIR_SRC)Class/Component/Image/GetSet.cpp

OBJ				=	$(SRC:.cpp=.o)


CXX				=	g++
RM				=	rm -Rf
LN				=	ln


CXXFLAGS		+=	-Wall -Wextra -Weffc++ -Wshadow -Wfloat-equal -Wenum-compare -Wimplicit -Winline -Wmain
CXXFLAGS		+=	-std=c++0x
CXXFLAGS		+=	-I$(DIR_INC)
CXXFLAGS		+=	-DDataDirectory=\"$(DIR_DAT)\" -DDataTexturesDirectory=\"$(DIR_DAT_TXT)\"
LDFLAGS			+=	-lGL -lGLU -lsfml-system -lsfml-window -lsfml-graphics -lsfml-audio -lsfml-network




$(NAME):			$(OBJ)
					$(CXX) -o $(DIR_BIN)$(NAME) $(OBJ) $(LDFLAGS)


$(LINK):
					$(LN) -s $(DIR_BIN)$(NAME) $(LINK)


executable:			$(NAME)

link:				$(LINK)

all:				$(NAME) $(LINK)


quick:
					make -j5 $(NAME)
					make $(LINK)


rquick:				fclean
					make -j5 $(NAME)
					make $(LINK)


clean:
					clean
					$(RM) $(OBJ)


fclean:				clean
					$(RM) $(DIR_BIN)$(NAME)
					$(RM) $(LINK)


re:					fclean all


world:
					make rquick
					make clean


.PHONY:				all quick clean fclean re
